package se.webbzon.oschi01.worldobject.appearance;

import javax.media.j3d.BranchGroup;
import javax.media.j3d.Transform3D;

public interface Appearance3D {
        
        /*============================================================
        Public Methods
        ============================================================*/
        
        /** This method is invoked when the WorldArea performs a regular global step. **/
        public void onStepEnd();
        
        /** Sets the animation of the appearance. **/
        public void setAnimation(Animation3D animation);
        
        /** Returns the animation of the appearance. **/
        public Animation3D getAnimation();
        
        /** Copies the transform of the appearance to the given Transform3D. **/
        public void getTransform(Transform3D transform);
        
        /** Sets the transform of the appearance and updates the java3d appearance. **/
        public void setTransform(Transform3D transform);
        
        /** Returns the rendering order number of this Appearance3D. If the
         * appearance is rendered in a WorldAreaView which supports AUTOMATIC_ORDER
         * then the appearance with the highest rendering order will be rendered last. **/
        public int getRenderingOrder();
        
        /** Returns the visibility of the Appearance3D. **/
        public abstract boolean getVisible();
        
        /** Sets the visibility of the Appearance3D. **/
        public abstract void setVisible(boolean visible);
        
        /** Returns the java3d branch group associated with this Appearance3D. **/
        public BranchGroup getJ3dBranch();

}